{% load form_tags widget_tweaks %}

{% if form.non_field_errors %}
  <div class="alert alert-danger" role="alert">
    {% for error in form.non_field_errors %}
      <p{% if forloop.last %} class="mb-0"{% endif %}>{{ error }}</p>
    {% endfor %}
  </div>
{% endif %}

{#{% for field in form %}#}
{#  <div class="form-group">#}
{#    {{ field.label_tag }}#}
{##}
{#    {% if form.is_bound %}#}
{#      {% if field.errors %}#}
{#        {% render_field field class="form-control is-invalid" %}#}
{#        {% for error in field.errors %}#}
{#          <div class="invalid-feedback">#}
{#            {{ error }}#}
{#          </div>#}
{#        {% endfor %}#}
{#      {% else %}#}
{#        {% render_field field class="form-control is-valid" %}#}
{#      {% endif %}#}
{#    {% else %}#}
{#      {% render_field field class="form-control" %}#}
{#    {% endif %}#}
{% for field in form %}
  <div class="form-group">
    {{ field.label_tag }}
    {% render_field field class=field|input_class %}
    {% for error in field.errors %}
      <div class="invalid-feedback">
        {{ error }}
      </div>
    {% endfor %}

    {% if field.help_text %}
      <small class="form-text text-muted">
        {{ field.help_text|safe }}
      </small>
    {% endif %}
  </div>
{% endfor %}